uniform sampler2DRect image;
uniform sampler2D blurImage;
uniform sampler2D vingette;

void main()
{
    
    vec2 texCoords = gl_TexCoord[0].xy;
    vec2 blurCoords = gl_TexCoord[1].xy;
    
    vec4 vignetteColor = texture2D(vingette, blurCoords);
    
    vec4 baseColor = texture2DRect(image, texCoords) * vignetteColor;
    
    vec4 blurColor = texture2D(blurImage, blurCoords) * vignetteColor;
    
    
    float difference = max(blurColor.r, max(blurColor.g,blurColor.b)) - max(baseColor.r, max(baseColor.g, baseColor.b));
    float amountToAdd = 1.0 + (clamp(difference * 1.0, 0.5, 1.0) - 0.5) * 1.0;
    
   // blurColor = mix(baseColor, blurColor,clamp(difference * 1.0, 0.0, 0.5))
    /*if(difference < 0.0)
    {
        blurColor = baseColor;
    }
    else
    {
        blurColor = (blurColor * blurColor);
    }*/
    
    blurColor = mix(baseColor, blurColor, clamp((difference + 0.01) * 10.0, 0.0, 1.0));
    
    vec4 combined = max((baseColor - vec4(0.2)) * 1.1, vec4(0.0)) + blurColor * amountToAdd;
    combined.a = 1.0;

	gl_FragColor = combined;
}
